package com.novel.utils;

//Java获取各种常用时间方法
import java.text.DateFormat;    
import java.text.ParseException;
import java.text.ParsePosition;    
import java.text.SimpleDateFormat;    
import java.util.Calendar;    
import java.util.Date;    
import java.util.GregorianCalendar;    

public class DateTime {    
    //用来全局控制 上一周，本周，下一周的周数变化    
    private  int weeks = 0;    
    //private int MaxDate;//一月最大天数    
    private int MaxYear;//一年最大天数    
        
       

    public static Date date = null;

    public static DateFormat dateFormat = null;

    public static Calendar calendar = null;

    /**
     * 英文简写（默认）如：2010-12-01
     */
    public static String FORMAT_SHORT = "yyyy-MM-dd";
    
    /**
     * 英文全称  如：2010-12-01 23:15:06
     */
    public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss";
    
    /**
     * 精确到毫秒的完整时间    如：yyyy-MM-dd HH:mm:ss.S
     */
    public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S";
    
    /**
     * 中文简写  如：2010年12月01日
     */
    public static String FORMAT_SHORT_CN = "yyyy年MM月dd";
    
    /**
     * 中文全称  如：2010年12月01日  23时15分06秒
     */
    public static String FORMAT_LONG_CN = "yyyy年MM月dd日  HH时mm分ss秒";
    
    /**
     * 精确到毫秒的完整中文时间
     */
    public static String FORMAT_FULL_CN = "yyyy年MM月dd日  HH时mm分ss秒SSS毫秒";

    
    /**   
     * @param args   
     */   
    public static void main(String[] args) {    
    	DateTime tt = new DateTime();    
        System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd HH:mm:ss"));    
        System.out.println("获取本周一日期:"+tt.getMondayOFWeek());    
        System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday());    
        System.out.println("获取上周一日期:"+tt.getPreviousWeekday());    
        System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday());    
        System.out.println("获取下周一日期:"+tt.getNextMonday());    
        System.out.println("获取下周日日期:"+tt.getNextSunday());    
        System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd HH:mm:ss"));    
        System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth());    
        System.out.println("获取本月最后一天日期:"+tt.getDefaultDay());    
        System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst());    
        System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd());    
        System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst());    
        System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd());    
        System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst());    
        System.out.println("获取本年最后一天日期:"+tt.getCurrentYearEnd());    
        System.out.println("获取去年的第一天日期:"+tt.getPreviousYearFirst());    
        System.out.println("获取去年的最后一天日期:"+tt.getPreviousYearEnd());    
        System.out.println("获取明年第一天日期:"+tt.getNextYearFirst());    
        System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd());    
        System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11));    
        System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+DateTime.getTwoDay("2008-12-1","2008-9-29"));    
    
        
        //System.out.println("获取当天日期:"+ tt.getNow());
        //System.out.println("在当前日期上-7天:"+ tt.format(tt.addDay(new Date(),-7)));
        //System.out.println("在当前日期上加一个月:"+tt.format(tt.addMonth(new Date(), -2)));
    }    
    
    //查询基准时间
    public static Date getBaseDate()
    {
    	return parse("1900-01-01 00:00:00");
    }

    /**   
        * 得到二个日期间的间隔天数   
        */   
    public static String getTwoDay(String sj1, String sj2) 
    {    
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
        long day = 0;    
        try 
        {    
			 java.util.Date date = myFormatter.parse(sj1);    
			 java.util.Date mydate = myFormatter.parse(sj2);    
			 day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);    
        } 
        catch (Exception e) 
        {    
        	return "";    
        }    
        return day + "";    
    }    
   
   
    /**   
        * 根据一个日期，返回是星期几的字符串   
        *    
        * @param sdate   
        * @return   
        */   
    public static String getWeek(String sdate) {    
        // 再转换为时间    
        Date date = DateTime.strToDate(sdate);    
        Calendar c = Calendar.getInstance();    
        c.setTime(date);    
        // int hour=c.get(Calendar.DAY_OF_WEEK);    
        // hour中存的就是星期几了，其范围 1~7    
        // 1=星期日 7=星期六，其他类推    
        return new SimpleDateFormat("EEEE").format(c.getTime());    
    }    
   
    /**   
        * 将短时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss    
        *    
        * @param strDate   
        * @return   
        */   
    public static Date strToDate(String strDate) {    
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
        ParsePosition pos = new ParsePosition(0);    
        Date strtodate = formatter.parse(strDate, pos);    
        return strtodate;    
    }    
   
    /**   
        * 两个时间之间的天数   
        *    
        * @param date1   
        * @param date2   
        * @return   
        */   
    public static long getDays(String date1, String date2) {    
	        if (date1 == null || date1.equals(""))    
	         return 0;    
	        if (date2 == null || date2.equals(""))    
	         return 0;    
	        // 转换为标准时间    
	        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
	        java.util.Date date = null;    
	        java.util.Date mydate = null;    
	        try {    
	         date = myFormatter.parse(date1);    
	         mydate = myFormatter.parse(date2);    
	        } catch (Exception e) {    
	        }    
	        long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);    
	        return day;    
	    }    
	   
	   
	   
	        
	    // 计算当月最后一天,返回字符串    
	    public String getDefaultDay(){      
	       String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	       Calendar lastDate = Calendar.getInstance();    
	       lastDate.set(Calendar.DATE,1);//设为当前月的1号    
	       lastDate.add(Calendar.MONTH,1);//加一个月，变为下月的1号    
	       lastDate.add(Calendar.DATE,-1);//减去一天，变为当月最后一天    
	           
	       str=sdf.format(lastDate.getTime());    
	       return str;      
	    }    
	        
	    // 上月第一天    
	    public String getPreviousMonthFirst(){      
	       String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	       Calendar lastDate = Calendar.getInstance();    
	       lastDate.set(Calendar.DATE,1);//设为当前月的1号    
	       lastDate.add(Calendar.MONTH,-1);//减一个月，变为下月的1号    
	       //lastDate.add(Calendar.DATE,-1);//减去一天，变为当月最后一天    
	           
	       str=sdf.format(lastDate.getTime());    
	       return str;      
	    }    
	        
	    //获取当月第一天    
	    public String getFirstDayOfMonth(){      
	       String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	       Calendar lastDate = Calendar.getInstance();    
	       lastDate.set(Calendar.DATE,1);//设为当前月的1号    
	       str=sdf.format(lastDate.getTime());    
	       return str;      
	    }    
	        
	    // 获得本周星期日的日期      
	    public String getCurrentWeekday() {    
	        weeks = 0;    
	        int mondayPlus = this.getMondayPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE, mondayPlus+6);    
	        Date monday = currentDate.getTime();    
	            
	        DateFormat df = DateFormat.getDateInstance();    
	        String preMonday = df.format(monday);    
	        return preMonday;    
	    }    
	        
	        
	    //获取当天时间     
	    public String getNowTime(String dateformat){    
	        Date   now   =   new   Date();       
	        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat(dateformat);//可以方便地修改日期格式       
	        String  hehe  = dateFormat.format(now);       
	        return hehe;    
	    }    
	        
	    // 获得当前日期与本周日相差的天数    
	    private int getMondayPlus() {    
	        Calendar cd = Calendar.getInstance();    
	        // 获得今天是一周的第几天，星期日是第一天，星期二是第二天......    
	        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;         //因为按中国礼拜一作为第一天所以这里减1    
	        if (dayOfWeek == 1) {    
	            return 0;    
	        } else {    
	            return 1 - dayOfWeek;    
	        }    
	    }    
	        
	    //获得本周一的日期    
	    public String getMondayOFWeek(){    
	         weeks = 0;    
	         int mondayPlus = this.getMondayPlus();    
	         GregorianCalendar currentDate = new GregorianCalendar();    
	         currentDate.add(GregorianCalendar.DATE, mondayPlus);    
	         Date monday = currentDate.getTime();    
	             
	         DateFormat df = DateFormat.getDateInstance();    
	         String preMonday = df.format(monday);    
	         return preMonday;    
	    }    
	        
	  //获得相应周的周六的日期    
	    public String getSaturday() {    
	        int mondayPlus = this.getMondayPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);    
	        Date monday = currentDate.getTime();    
	        DateFormat df = DateFormat.getDateInstance();    
	        String preMonday = df.format(monday);    
	        return preMonday;    
	    }    
	        
	 // 获得上周星期日的日期    
	    public String getPreviousWeekSunday() {    
	        weeks=0;    
	        weeks--;    
	        int mondayPlus = this.getMondayPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);    
	        Date monday = currentDate.getTime();    
	        DateFormat df = DateFormat.getDateInstance();    
	        String preMonday = df.format(monday);    
	        return preMonday;    
	    }    
	   
	 // 获得上周星期一的日期    
	    public String getPreviousWeekday() {    
	        weeks--;    
	        int mondayPlus = this.getMondayPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);    
	        Date monday = currentDate.getTime();    
	        DateFormat df = DateFormat.getDateInstance();    
	        String preMonday = df.format(monday);    
	        return preMonday;    
	    }    
	        
	    // 获得下周星期一的日期    
	    public String getNextMonday() {    
	        weeks++;    
	        int mondayPlus = this.getMondayPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);    
	        Date monday = currentDate.getTime();    
	        DateFormat df = DateFormat.getDateInstance();    
	        String preMonday = df.format(monday);    
	        return preMonday;    
	    }    
	        
	 // 获得下周星期日的日期    
	    public String getNextSunday() {    
	            
	        int mondayPlus = this.getMondayPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6);    
	        Date monday = currentDate.getTime();    
	        DateFormat df = DateFormat.getDateInstance();    
	        String preMonday = df.format(monday);    
	        return preMonday;    
	    }    
	        
	        
 
	        
	  //获得上月最后一天的日期    
	    public String getPreviousMonthEnd(){    
	        String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	       Calendar lastDate = Calendar.getInstance();    
	      lastDate.add(Calendar.MONTH,-1);//减一个月    
	      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天     
	      lastDate.roll(Calendar.DATE, -1);//日期回滚一天，也就是本月最后一天     
	       str=sdf.format(lastDate.getTime());    
	       return str;      
	    }    
	        
	  //获得下个月第一天的日期    
	    public String getNextMonthFirst(){    
	        String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	       Calendar lastDate = Calendar.getInstance();    
	      lastDate.add(Calendar.MONTH,1);//减一个月    
	      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天     
	       str=sdf.format(lastDate.getTime());    
	       return str;      
	    }    
	        
	  //获得下个月最后一天的日期    
	    public String getNextMonthEnd(){    
	        String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	       Calendar lastDate = Calendar.getInstance();    
	      lastDate.add(Calendar.MONTH,1);//加一个月    
	      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天     
	      lastDate.roll(Calendar.DATE, -1);//日期回滚一天，也就是本月最后一天     
	       str=sdf.format(lastDate.getTime());    
	       return str;      
	    }    
	        
	    //获得明年最后一天的日期    
	    public String getNextYearEnd(){    
	        String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	      Calendar lastDate = Calendar.getInstance();    
	      lastDate.add(Calendar.YEAR,1);//加一个年    
	      lastDate.set(Calendar.DAY_OF_YEAR, 1);    
	     lastDate.roll(Calendar.DAY_OF_YEAR, -1);    
	       str=sdf.format(lastDate.getTime());    
	       return str;      
	    }    
	        
	  //获得明年第一天的日期    
	    public String getNextYearFirst(){    
	        String str = "";    
	       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
	   
	      Calendar lastDate = Calendar.getInstance();    
	      lastDate.add(Calendar.YEAR,1);//加一个年    
	      lastDate.set(Calendar.DAY_OF_YEAR, 1);    
	           str=sdf.format(lastDate.getTime());    
	      return str;      
	            
	    }    
	        
	  //获得本年有多少天    
	    /*
	    private int getMaxYear(){    
	        Calendar cd = Calendar.getInstance();    
	        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天    
	        cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。    
	        int MaxYear = cd.get(Calendar.DAY_OF_YEAR);     
	        return MaxYear;    
	    }
	    */    
	        
	    private int getYearPlus(){    
	        Calendar cd = Calendar.getInstance();    
	        int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天    
	        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天    
	        cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。    
	        int MaxYear = cd.get(Calendar.DAY_OF_YEAR);    
	        if(yearOfNumber == 1){    
	            return -MaxYear;    
	        }else{    
	            return 1-yearOfNumber;    
	        }    
	    }    
	  //获得本年第一天的日期    
	    public String getCurrentYearFirst(){    
	        int yearPlus = this.getYearPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE,yearPlus);    
	        Date yearDay = currentDate.getTime();    
	        DateFormat df = DateFormat.getDateInstance();    
	        String preYearDay = df.format(yearDay);    
	        return preYearDay;    
	    }    
	        
	        
	  //获得本年最后一天的日期 *    
	    public String getCurrentYearEnd(){    
	        Date date = new Date();    
	        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式       
	        String  years  = dateFormat.format(date);       
	        return years+"-12-31";    
	    }    
	        
	        
	  //获得上年第一天的日期 *    
	    public String getPreviousYearFirst(){    
	        Date date = new Date();    
	        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式       
	        String  years  = dateFormat.format(date); int years_value = Integer.parseInt(years);      
	        years_value--;    
	        return years_value+"-1-1";    
	    }    
	        
	  //获得上年最后一天的日期    
	    public String getPreviousYearEnd(){    
	        weeks--;    
	        int yearPlus = this.getYearPlus();    
	        GregorianCalendar currentDate = new GregorianCalendar();    
	        currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1));    
	        Date yearDay = currentDate.getTime();    
	        DateFormat df = DateFormat.getDateInstance();    
	        String preYearDay = df.format(yearDay);    
	        getThisSeasonTime(11);    
	        return preYearDay;    
	    }    
	        
	  //获得本季度    
	    public String getThisSeasonTime(int month){    
	        int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};    
	        int season = 1;    
	        if(month>=1&&month<=3){    
	            season = 1;    
	        }    
	        if(month>=4&&month<=6){    
	            season = 2;    
	        }    
	        if(month>=7&&month<=9){    
	            season = 3;    
	        }    
	        if(month>=10&&month<=12){    
	            season = 4;    
	        }    
	        int start_month = array[season-1][0];    
	        int end_month = array[season-1][2];    
	            
	        Date date = new Date();    
	        SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式       
	        String  years  = dateFormat.format(date);       
	        int years_value = Integer.parseInt(years);    
	            
	        int start_days =1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);    
	        int end_days = getLastDayOfMonth(years_value,end_month);    
	        String seasonDate = years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days;    
	        return seasonDate;    
	            
	    }    
	        
	    /**   
	     * 获取某年某月的最后一天   
	     * @param year 年   
	     * @param month 月   
	     * @return 最后一天   
	     */   
	   private int getLastDayOfMonth(int year, int month) {    
	         if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8   
	                   || month == 10 || month == 12) {    
	               return 31;    
	         }    
	         if (month == 4 || month == 6 || month == 9 || month == 11) {    
	               return 30;    
	         }    
	         if (month == 2) {    
	               if (isLeapYear(year)) {    
	                   return 29;    
	               } else {    
	                   return 28;    
	               }    
	         }    
	         return 0;    
	   }    
	   /**   
	    * 是否闰年   
	    * @param year 年   
	    * @return    
	    */   
	  public boolean isLeapYear(int year) {    
	        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);    
	  }    


	      /**
	       * 获得默认的 date pattern
	       */
	      public static String getDatePattern() {
	          return FORMAT_LONG;
	      }

	      /**
	       * 根据预设格式返回当前日期
	       * @return
	       */
	      public static String getNowString() {
	          return format(new Date());
	      }
	      
	      /**
	       * 根据用户格式返回当前日期
	       * @param format
	       * @return
	       */
	      public static String getNowString(String format) {
	          return format(new Date(), format);
	      }

	      
	      /**
	       * 使用预设格式格式化日期
	       * @param date
	       * @return
	       */
	      public static String format(Date date) {
	          return format(date, getDatePattern());
	      }

	      /**
	       * 使用用户格式格式化日期
	       * @param date 日期
	       * @param pattern 日期格式
	       * @return
	       */
	      public static String format(Date date, String pattern) {
	          String returnValue = null;
	          if (date != null) {
	              SimpleDateFormat df = new SimpleDateFormat(pattern);
	              returnValue = df.format(date);
	          }
	          return (returnValue);
	      }

	      /**
	       * 使用预设格式提取字符串日期
	       * @param strDate 日期字符串
	       * @return
	       */
	      public static Date parse(String strDate) {
	          return parse(strDate, getDatePattern());
	      }

	      /**
	       * 使用用户格式提取字符串日期
	       * @param strDate 日期字符串
	       * @param pattern 日期格式
	       * @return
	       */
	      public static Date parse(String strDate, String pattern) {
	          SimpleDateFormat df = new SimpleDateFormat(pattern);
	          try {
	              return df.parse(strDate);
	          } catch (ParseException e) {
	              e.printStackTrace();
	              return null;
	          }
	      }


	      public static Date getNow()
	      {
	    	  Date date = new Date();
	    	  Calendar cal = Calendar.getInstance();
	          cal.setTime(date);
	          return cal.getTime();
	      }
	      
	      /**
	       * 在日期上增加数个整年
	       * @param date 日期
	       * @param n 要增加的年数
	       * @return
	       */
	      public static Date addYear(Date date, int n) {
	          Calendar cal = Calendar.getInstance();
	          cal.setTime(date);
	          cal.add(Calendar.YEAR, n);
	          return cal.getTime();
	      }
	      
	      /**
	       * 在日期上增加数个整月
	       * @param date 日期
	       * @param n 要增加的月数
	       * @return
	       */
	      public static Date addMonth(Date date, int n) {
	          Calendar cal = Calendar.getInstance();
	          cal.setTime(date);
	          cal.add(Calendar.MONTH, n);
	          return cal.getTime();
	      }

	      /**
	       * 在日期上增加天数
	       * @param date 日期
	       * @param n 要增加的天数
	       * @return
	       */
	      public static Date addDay(Date date, int n) {
	          Calendar cal = Calendar.getInstance();
	          cal.setTime(date);
	          cal.add(Calendar.DATE, n);
	          return cal.getTime();
	      }
	      
	      public static Date addMinutes(Date date, int n) {
	          Calendar cal = Calendar.getInstance();
	          cal.setTime(date);
	          cal.add(Calendar.MINUTE, n);
	          return cal.getTime();
	      }
      
	      /**
	       * 获取距现在某一小时的时刻
	       * @param format 格式化时间的格式
	       * @param h    距现在的小时 例如：h=-1为上一个小时，h=1为下一个小时
	       * @return
	       */
	      public static String getpreHour(String format, int h){
	          SimpleDateFormat sdf = new SimpleDateFormat(format);
	          Date date = new Date();
	          date.setTime(date.getTime()+h*60*60*1000);
	          return sdf.format(date);
	      }
	      
	      /**
	       * 获取距现在某一分钟的时刻
	       * @param format 格式化时间的格式
	       * @param h  
	       * @return
	       */
	      public static String getpreMinute(String format, int h){
	          SimpleDateFormat sdf = new SimpleDateFormat(format);
	          Date date = new Date();
	          date.setTime(date.getTime()+h*60*1000);
	          return sdf.format(date);
	      }
	      
	      /**
	       * 获取时间戳
	       */
	      public static String getTimeString() {
	          SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL);
	          Calendar calendar = Calendar.getInstance();
	          return df.format(calendar.getTime());
	      }

	      /**
	       * 获取日期年份
	       * @param date 日期
	       * @return
	       */
	      public static String getYear(Date date) {
	          return format(date).substring(0, 4);
	      }
	      /**
	       * 功能描述：返回月
	       * 
	       * @param date
	       *            Date 日期
	       * @return 返回月份
	       */
	      public static int getMonth(Date date) {
	          calendar = Calendar.getInstance();
	          calendar.setTime(date);
	          return calendar.get(Calendar.MONTH) + 1;
	      }

	      /**
	       * 功能描述：返回日
	       * 
	       * @param date
	       *            Date 日期
	       * @return 返回日份
	       */
	      public static int getDay(Date date) {
	          calendar = Calendar.getInstance();
	          calendar.setTime(date);
	          return calendar.get(Calendar.DAY_OF_MONTH);
	      }

	      /**
	       * 功能描述：返回小
	       * 
	       * @param date
	       *            日期
	       * @return 返回小时
	       */
	      public static int getHour(Date date) {
	          calendar = Calendar.getInstance();
	          calendar.setTime(date);
	          return calendar.get(Calendar.HOUR_OF_DAY);
	      }

	      /**
	       * 功能描述：返回分
	       * 
	       * @param date
	       *            日期
	       * @return 返回分钟
	       */
	      public static int getMinute(Date date) {
	          calendar = Calendar.getInstance();
	          calendar.setTime(date);
	          return calendar.get(Calendar.MINUTE);
	      }

	      /**
	       * 返回秒钟
	       * 
	       * @param date
	       *            Date 日期
	       * @return 返回秒钟
	       */
	      public static int getSecond(Date date) {
	          calendar = Calendar.getInstance();
	          calendar.setTime(date);
	          return calendar.get(Calendar.SECOND);
	      }

	      /**
	       * 功能描述：返回毫
	       * 
	       * @param date
	       *            日期
	       * @return 返回毫
	       */
	      public static long getMillis(Date date) {
	          calendar = Calendar.getInstance();
	          calendar.setTime(date);
	          return calendar.getTimeInMillis();
	      }
	      
	      /**
	       * 功能描述：返回秒
	       * 
	       * @param date
	       *            日期
	       * @return 返回秒
	       */
	      public static int getSecond() {
	          return (int) (System.currentTimeMillis() / 1000);
	      }
	      
	      
	      
	      /**
	       * 按默认格式的字符串距离今天的天数
	       * @param date 日期字符串
	       * @return
	       */
	      public static int countDays (String date) {
	          long t = Calendar.getInstance().getTime().getTime();
	          Calendar c = Calendar.getInstance();
	          c.setTime(parse(date));
	          long t1 = c.getTime().getTime();
	          return (int)(t/1000 - t1/1000)/3600/24;
	      }
	      
	      /**
	       * 按用户格式字符串距离今天的天数
	       * @param date 日期字符串
	       * @param format 日期格式
	       * @return
	       */
	      public static int countDays (String date, String format) {
	          long t = Calendar.getInstance().getTime().getTime();
	          Calendar c = Calendar.getInstance();
	          c.setTime(parse(date, format));
	          long t1 = c.getTime().getTime();
	          return (int)(t/1000 - t1/1000)/3600/24;
	      }

	     /**  
	      * 字符串日期转换成中文格式日期  
	      * @param date  字符串日期 yyyy-MM-dd  
	      * @return  yyyy年MM月dd日  
	      * @throws Exception  
	      */  
	     public  String dateToCnDate(String date) {   
	         String result = "";   
	         String[]  cnDate = new String[]{"〇","一","二","三","四","五","六","七","八","九"};   
	         String ten = "十";   
	         String[] dateStr = date.split("-");   
	         for (int i=0; i<dateStr.length; i++) {   
	             for (int j=0; j<dateStr.length; j++) {   
	                 String charStr = dateStr[i];   
	                 String str = String.valueOf(charStr.charAt(j));   
	                 if (charStr.length() == 2) {   
	                     if (charStr.equals("10")) {   
	                         result += ten;   
	                         break;   
	                     } else {   
	                         if (j == 0) {   
	                             if (charStr.charAt(j) == '1')    
	                                 result += ten;   
	                             else if (charStr.charAt(j) == '0')   
	                                 result += "";   
	                             else  
	                                 result += cnDate[Integer.parseInt(str)] + ten;   
	                         }   
	                         if (j == 1) {   
	                             if (charStr.charAt(j) == '0')   
	                                 result += "";   
	                              else  
	                                 result += cnDate[Integer.parseInt(str)];   
	                         }   
	                     }   
	                 } else {   
	                     result += cnDate[Integer.parseInt(str)];   
	                 }   
	             }   
	             if (i == 0) {   
	                 result += "年";   
	                 continue;   
	             }   
	             if (i == 1) {   
	                 result += "月";   
	                 continue;   
	             }   
	             if (i == 2) {   
	                 result += "日";   
	                 continue;   
	             }   
	         }   
	         return result;   
	     }  
     /**检测某个时间节点是否是在某一天的某个时间段内;
      * @author niwanbo
      * @param beginTime
      * @param endTime
      * @param time
      * @return
      */
     public static boolean isLimitTime(String beginTime,String endTime,Date time){
         boolean result = false;
 		SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
 		String date = format.format(time);
 		try {
 			Date beginTimeDate = format.parse(beginTime);
 			Date endTimeDate = format.parse(endTime);
 			Date realtime = format.parse(date);
 			
 			if(realtime.after(beginTimeDate) || realtime.before(endTimeDate)){
 				result = true;
 			}
 		} catch (ParseException e) {
 			e.printStackTrace();
 		}
    	 return result;
     }
     
     public static String[] getDayRange(Date d)
     {
    	 String sd = format(d, FORMAT_SHORT);
    	 String rlt[] = {sd + " 00:00:00", sd + " 23:59:59"};
    	 return rlt;
     }

}

